package com.wx.network.codec;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

/**
 * prc客户端编码器
 * 把请求数据发送给服务器端
 * 在请求数据中封装的二进制数据是
 * 经过谷歌proto转换以后的request
 */
public class RpcClientEncoder extends MessageToByteEncoder<RpcProtocol> {
    /**
     * 先发送数据的长度
     * RpcProtocol
     * @param channelHandlerContext
     * @param rpcProtocol
     * @param byteBuf
     * @throws Exception
     */
    @Override
    protected void encode(ChannelHandlerContext channelHandlerContext, RpcProtocol rpcProtocol, ByteBuf byteBuf) throws Exception {

        byteBuf.writeInt(rpcProtocol.getLength());
        //发送request请求的二进制数据
        byteBuf.writeBytes(rpcProtocol.getData());
    }
}
